"""
类的方法是没有重载的概念，就是方法名相同的只能有一个，尽管方法的参数不相同，
如果有多个同名的方法，后者会覆盖前面的
特点：
1. 如果类中不定义__init__，调用父类super class的__init__
2. 如果类继承父类也需要定义自己的__init__，就需要在当前类的__init__调用一下父类的__init__
3. 如何调用父类__init__:
    super().__init__(参数)
    super(类名，对象).__init__(参数)
4. 如果父类有eat()，字类也定义一个eat方法，默认搜索的原则：先找当前类，再去找父类
    override: 重写（覆盖），父类提供的方法不能满足字类的需求就需要重写，字类重写了仍然可以用super().method调用父类的方法


"""


class parent:
    def __init__(self):
        print("父亲初始化------")
        self.name = "高嘉银"

    def eat(self):
        print(self.name + "正在吃饭")


class child(parent):
    def __init__(self):
        print("子类初始化函数-----")
        # super().__init__()
        super(child, self).__init__()  # 这个方法比上面这个多一个判断，就是判断self对象是否是child类造出来的


c = child()
c.eat()

"""
python中可以支持多继承,多继承中的搜索顺序为 广度优先（py2.0+是从左到右深度优先）
def chile(A,B,C)
    pass
如果父类中有相同的方法时候，字类调用该方法的顺序为：
print(child.__mro__)
"""


class A:
    def test(self):
        print("test-------")


class B:
    def test1(self):
        print("test1-----")


class C(A, B):
    def test2(self):
        super().test()
        super().test1()
        print("test2-----------------")


c = C()
c.test2()
print(C.__mro__)  # 查看类的执行顺序
